package com.hhs.storage.bean;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *
 * </p>
 *
 * @author hhs
 * @since 2023-03-01
 */
@Data
public class TopicMessage implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 类型-领导任务通知
     */
    public static final Integer TYPE_LEADER_TASK = 4;
    /**
     * 类型-项目组通知
     */
    public static final Integer TYPE_PROJECT_GROUP = 3;
    /**
     * 类型-职员私信
     */
    public static final Integer TYPE_LEADER = 2;
    /**
     * 类型项目
     */
    public static final Integer TYPE_PROJECT = 1;
    /**
     * 类型个人
     */
    public static final Integer TYPE_PERSONAL = 0;
    /**
     * 未读
     */
    public static final Integer UNREAD = 0;
    /**
     * 已读
     */
    public static final Integer READ = 1;

    private String id;
    /**
     * 内容
     */
    private String content;

    /**
     * 话题id
     */
    private String topicId;
    /**
     * 话题对象信息
     */
    @TableField(exist = false)
    private Map<String,Object> topicMap=new HashMap<>();
    /**
     * 发送人
     */
    private String userId;
    @TableField(exist = false)
    private BaseUser user;
    /**
     * 回复人
     */
    private String replyUserId;
    @TableField(exist = false)
    private BaseUser replyUser;
    /**
     * 回复的消息id
     */
    private String replyId;

    /**
     * 顶级评论id
     */
    private String topId;

    /**
     * 0个人，1项目
     */
    private Integer type;

    /**
     * 创建时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * 是否已读
     */
    private Integer isRead;
    /**
     * 是否被读
     */
    private Integer beRead;
    /**
     * 备份topic_id,用于项目计划中
     */
    private String bakTopicId;

    @TableField(exist = false)
    private List<TopicMessage> replyList = new ArrayList<>();

}
